package UnitTest;


import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;


import ExistController.*;

public class BDControllerTest {

	private static BDController BD;

	public BDControllerTest()
	{
		BD = new BDController();
	}

	public static void main(String args[]) throws Exception
	{
		BD = new BDController();
		BD.connect();
		
		int val=5;
		switch (val) {
		case 0: usersTest(); break;
		case 1: PcTest(); break;
		case 2: TrabajoTest(); break;
		case 3: ImagesDataTest(); break;
		case 4: InsertResultadoTest(); break;

		default:
			break;
		}

		
	}

	/**
	 * Unit Test que prueba las funciones de los usuarios
	 * 
	 * @throws Exception
	 */
	public static void usersTest() throws Exception
	{
		System.out.println(BD.insertUsuario("Michael", "Delgado R", "ajdfijasdhsadnjk", "Alquilado", "464132Q", "Carretera al infierno nº2"));
		System.out.println(BD.removeUsuario("464132Q"));

		Usuario sr = BD.getUsuario("2342343J");
		sr.printUsr();

		sr = BD.getUsuario("23423443J");
		sr.printUsr();

		sr = BD.getUsuario("464132Q");
		sr.printUsr();

		java.util.List<Usuario> li = BD.getTodosUsers();
		ListIterator<Usuario> it = li.listIterator();
		while(it.hasNext())
		{
			it.next().printUsr();
		}		
	}

	/**
	 * Unit Test que prueba las funciones de la clase DatosTecnicos
	 * 
	 * @throws Exception
	 */
	public static void PcTest() throws Exception
	{
		System.out.println(BD.insertPC("3", "P2 133Mz", "1 GB", "20 GB"));
		System.out.println(BD.removePC("3"));
		System.out.println(BD.removePC("3"));
		System.out.println(BD.insertPC("3", "P2 133Mz", "1 GB", "20 GB"));

		DatosTecnicos dt = BD.getPc("1");
		dt.printDatosTecnicos();

		dt = BD.getPc("2");
		dt.printDatosTecnicos();

		dt = BD.getPc("3");
		dt.printDatosTecnicos();

		dt = BD.getPc("4");
		dt.printDatosTecnicos();
	}

	/**
	 * Unit Test que prueba las funciones de los Trabajos
	 * 
	 * @throws Exception
	 */
	public static void TrabajoTest() throws Exception
	{
		System.out.println(BD.insertTarea("3","2", "feb 11 12:10","feb 11 17:10", "nasa2.jpg",100,10));
		System.out.println(BD.insertPos("3","1",550, 225, "nasa2.jpg",100,10));

		List<String> li = BD.getTrabajosDni("2342343J");
		ListIterator<String> it = li.listIterator();
		while(it.hasNext())
		{
			System.out.println(it.next());
		}

		Trabajo tr = BD.getTrabajo("1", "2", "nasa.jpg", 100, 10);
		tr.printTrabajo();
		tr.Res.printResultado();
		

		BD.finTrabajo("3", "nasa4.jpg", 300, 100, "jun 10 2011 15:20", "3453533M");
		
		BD.finTrabajo("3", "nasa4.jpg", 300, 200, "jun 10 2011 16:20", "3453533M");
		System.out.println("e");
	}

	/**
	 * Unit Test que prueba las funciones de las ImageData
	 * 
	 * @throws Exception
	 */
	public static void ImagesDataTest() throws Exception
	{
		BD.insertImageData("nasa2.jpg", "3", "Vie 19 Nov 10:00 2010", false, "Vie 19 nov 11:00 2010", "/hola");

		List<ImagesData> list = BD.getImDataContr("3");
		ListIterator<ImagesData> it = list.listIterator();
		while(it.hasNext())
		{
			it.next().printImageData();
		}

		BD.getImagesData("nasa.jpg").printImageData();
	}

	/**
	 * Unit Test para probar la funcion InsertResultado que permite insertar una lista de puntos con una llamada a la BD
	 * @throws Exception
	 */
	public static void InsertResultadoTest() throws Exception
	{
		List<String> results = new ArrayList<String>();
		results.add("100");
		results.add("0");
		results.add("200");
		results.add("0");
		results.add("300");
		results.add("0");
		

		System.out.println( BD.insertTarea("0", "1","10 Nov 2010 16:40:33","10 Nov 2010 18:50:22" ,"nasa", 0,0));
		System.out.println( BD.insertResultado(results, "0", "1", "nasa", 0,0) );
	}

}
